package com.caesar.Date;

/**
 * @author caesar
 * @date 2025/7/15
 * @Description:计算算法运行的时间 思路：
 * 记录起始时间：在算法执行前获取当前时间。
 * 执行算法：运行你要测试的代码逻辑。
 * 记录结束时间：在算法执行完成后再次获取当前时间。
 * 计算时间差：用结束时间减去起始时间，得到运行时间（单位为毫秒）
 * 可以使用System.currentTimeMillis()
 * 可以使用第一代的Date类
 * @apiNote
 */
public class TestAlgorithmTime {
    public static void main(String[] args) {
        int[] arr = new int[500];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 1000);
        }
        // 1. 记录开始时间
        long startTime = System.currentTimeMillis();

        // 2. 执行你的算法
        System.out.println("排序前：");
        for (int i : arr) {
            System.out.print(i + " ");
        }
        BubbleSOrt(arr);
        System.out.println("排序后：");
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
        // 3. 记录结束时间
        long endTime = System.currentTimeMillis();

        // 4. 计算并输出运行时间（毫秒）
        long duration = endTime - startTime;
        System.out.println("算法运行时间: " + duration + " 毫秒");
    }

    // 示例算法：简单循环
    public static void BubbleSOrt(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}
